Serializer এবং Deserializer এর কনফিগারেশন

Java Technologies - জ্যাকসন (Jackson) - Jackson এর মাধ্যমে কাস্টম Serializer এবং Deserializer তৈরি
190

Java-তে Serializer এবং Deserializer ব্যবহার করে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার সময় কনফিগারেশন খুব গুরুত্বপূর্ণ। এটি ডেটা ফরম্যাট, সিকিউরিটি, পারফরম্যান্স এবং কাস্টম প্রয়োজনীয়তার উপর নির্ভর করে কনফিগারেশন সেটআপ করা সম্ভব করে।


Serializer Configuration

Serializer ব্যবহার করে Java অবজেক্টকে ডেটা ফরম্যাটে রূপান্তরিত করা হয় (যেমন, JSON, XML, বা বাইনারি)। কনফিগারেশনে নিম্নলিখিত বিষয়গুলো বিবেচনা করা হয়:

১. Java Serialization (Default)

  • ডিফল্টভাবে, ObjectOutputStream অবজেক্টকে বাইনারি ফরম্যাটে সিরিয়ালাইজ করে।
  • নির্দিষ্ট ফিল্ড বাদ দিতে transient কিওয়ার্ড ব্যবহার করা হয়।
  • Custom Configuration:

    private void writeObject(ObjectOutputStream oos) throws IOException {
        oos.defaultWriteObject(); // ডিফল্ট সিরিয়ালাইজেশন
        oos.writeObject(customData); // কাস্টম ডেটা যোগ করা
    }
    

২. JSON Serialization

  • জনপ্রিয় লাইব্রেরি: Jackson, Gson
  • Jackson Serializer Configuration:

    ObjectMapper mapper = new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // null ভ্যালু বাদ দিন
    mapper.enable(SerializationFeature.INDENT_OUTPUT); // ফরম্যাটিং
    String json = mapper.writeValueAsString(object);
    

৩. XML Serialization

  • জনপ্রিয় লাইব্রেরি: JAXB, XStream
  • JAXB Configuration:

    JAXBContext context = JAXBContext.newInstance(MyClass.class);
    Marshaller marshaller = context.createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // সুন্দর ফরম্যাট
    marshaller.marshal(object, new File("output.xml"));
    

৪. Custom Serializer

  • সংবেদনশীল ডেটা এনক্রিপ্ট করা বা নির্দিষ্ট ফরম্যাটে রূপান্তর করতে কাস্টম লজিক ব্যবহার করা হয়।

    public class CustomSerializer extends StdSerializer<MyClass> {
        @Override
        public void serialize(MyClass value, JsonGenerator gen, SerializerProvider provider) throws IOException {
            gen.writeStartObject();
            gen.writeStringField("name", value.getName().toUpperCase()); // ডেটা কাস্টমাইজ করা
            gen.writeEndObject();
        }
    }
    

Deserializer Configuration

Deserializer ডেটা ফরম্যাট (যেমন JSON, XML, বা বাইনারি) থেকে Java অবজেক্টে রূপান্তর করে। কনফিগারেশনে ডেটা যাচাই, ফিল্ড ম্যাপিং, এবং বিশেষ ডেটা টাইপের জন্য নিয়ম প্রয়োগ করা হয়।

১. Java Deserialization (Default)

  • ObjectInputStream ব্যবহার করে বাইনারি ডেটা পুনরুদ্ধার করা হয়।
  • Custom Configuration:

    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
        ois.defaultReadObject(); // ডিফল্ট ডেসিরিয়ালাইজেশন
        customData = (String) ois.readObject(); // কাস্টম ডেটা পুনরুদ্ধার
    }
    

২. JSON Deserialization

  • Jackson Deserializer Configuration:

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // অজানা প্রপার্টি এড়িয়ে যান
    MyClass obj = mapper.readValue(jsonString, MyClass.class);
    

৩. XML Deserialization

  • JAXB Configuration:

    JAXBContext context = JAXBContext.newInstance(MyClass.class);
    Unmarshaller unmarshaller = context.createUnmarshaller();
    MyClass object = (MyClass) unmarshaller.unmarshal(new File("input.xml"));
    

৪. Custom Deserializer

  • নির্দিষ্ট ফিল্ড ভ্যালিডেশন বা কাস্টম ফরম্যাটে ডেটা ম্যাপ করার জন্য কাস্টম ডেসিরিয়ালাইজার প্রয়োজন।

    public class CustomDeserializer extends StdDeserializer<MyClass> {
        @Override
        public MyClass deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
            JsonNode node = p.getCodec().readTree(p);
            String name = node.get("name").asText().toLowerCase(); // কাস্টম ডেটা প্রক্রিয়াকরণ
            return new MyClass(name);
        }
    }
    

Serializer এবং Deserializer কনফিগারেশনের উপযোগিতা

  1. ডেটা নিরাপত্তা: সংবেদনশীল ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করা।
  2. ফরম্যাট কাস্টমাইজেশন: JSON, XML, বা অন্যান্য ফরম্যাট অনুযায়ী ডেটা সিরিয়ালাইজ/ডেসিরিয়ালাইজ করা।
  3. ভ্যালিডেশন: ডেসিরিয়ালাইজেশনের সময় ডেটার গঠন এবং মান যাচাই করা।
  4. পারফরম্যান্স: নির্দিষ্ট ফিল্ড বাদ দিয়ে পারফরম্যান্স বাড়ানো।

Jackson Serializer এবং Deserializer ব্যবহার

Serializer:

public class CustomSerializer extends StdSerializer<MyClass> {
    public CustomSerializer() {
        super(MyClass.class);
    }

    @Override
    public void serialize(MyClass value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        gen.writeStartObject();
        gen.writeStringField("name", "Mr. " + value.getName());
        gen.writeEndObject();
    }
}

Deserializer:

public class CustomDeserializer extends StdDeserializer<MyClass> {
    public CustomDeserializer() {
        super(MyClass.class);
    }

    @Override
    public MyClass deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonNode node = p.getCodec().readTree(p);
        String name = node.get("name").asText().replace("Mr. ", ""); // নাম থেকে "Mr." বাদ দেয়া
        return new MyClass(name);
    }
}

ObjectMapper Configuration:

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(MyClass.class, new CustomSerializer());
module.addDeserializer(MyClass.class, new CustomDeserializer());
mapper.registerModule(module);

এই কনফিগারেশনগুলোর মাধ্যমে আপনার সিরিয়ালাইজার এবং ডেসিরিয়ালাইজার আরো কার্যকর এবং নিরাপদ করা সম্ভব।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...